package IO;

public class Demo1_IOStream {

    /**
     * IO流
     *  I:input 输入
     *    在计算机中表示的是"读"的过程
     *    数据从磁盘读到内存(程序)的过程
     *  O:output 输出
     *    在计算机中表示的是"写"的过程
     *    数据从内存写入磁盘的过程
     *  流：不管是读还是写操作，都是对数据进行传输，传输的方式就是流
     *
     *  File类
     *    对于文件和文件夹进行增删改查的操作的类
     *    不关心文件中的具体的内容
     *
     *  关于文件的内容的操作
     *    流的分类
     *      按方向分
     *        输入流：把数据从其他设备中(一般指磁盘)读到内存的流
     *        输出流：把数据从内存写入到其他设备上的流
     *      按传输内容分
     *        字节流：
     *          以字节为单位进行读写的数据流
     *          任何文件都可以以字节流形式进行传输
     *        字符流：
     *          以字符为单位进行读写的数据流
     *          只能是文本文件才可以使用字符流进行传输
     *          字符流属于一种特殊的字节流，在字节的基础上整合了字符编码表
     *          给以文本为内容的文件提供了便利
     *    释放资源
     *      只要使用流进行数据传输，一定会占用流的资源。
     *      为了保证后来的人可以使用到资源，每次使用完毕后需要及时释放资源
     *      通过调用 close 方法实现
     *    刷写资源
     *      针对于输出流提供的一个方法。
     *      需要在不释放掉资源的前提下，可以把缓冲区内的数据先写入磁盘，可以继续写入
     *    四个顶层的流
     *      字节输入流   InputStream
     *      字节输出流   OutputStream
     *      字符输入流   Reader
     *      字符输出流   Writer
     *
     *    InputStream
     *      FileInputStream  文件字节输入流
     *    OutputStream
     *      FileOutputStream 文件字节输出流
     *    Reader
     *      FileReader       文件字符输入流
     *    Writer
     *      FileWriter       文件字符输出流
     *
     *  按功能分类
     *    节点流：直接连接某种资源的流，比如所有关于Filexxx的流
     *    处理流：对某个流进行封装，增加了额外的功能，也叫增强流
     *    案例
     *      节点流相当于直接用水龙头的水洗澡
     *      处理流相当于在水的基础上封装了热水器和花洒
     *      都能实现洗澡的基本功能，但是封装之后的感受完全不一样
     *  缓冲流
     *    就是一种针对四个Filexxx节点流产生的增强流
     *    缓冲流相当于在内部开辟了一块缓冲区，用来存储临时数据，大大提高了运行效率
     *    同时也提供了一些比较方便使用的方法，比如 readLine 一次可以读取一行数据
     *    字节缓冲流
     *      字节输入缓冲流
     *      字节输出缓冲流
     *    字符缓冲流
     *      字符输入缓冲流
     *      字符输出缓冲流
     */

}
